package com.cxl.price.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

/**
 * 匹配产品 品牌 型号 与搜素得到的title 进行匹配
 * 匹配规则 去掉特殊字符 如果产品 品牌型号 完全出现在 title中则表示 匹配成功 
 * 每匹配一个字符串则2边都去掉该字符串
 * @author Administrator
 *
 */
public class RegexpGood {
	
	
	public String pinpai;
	public String xinghao;
	public String title;
	
	public RegexpGood(String pinpai, String xinghao, String title) {
		
		this.pinpai = pinpai==null?"":pinpai.toLowerCase().replace("-","");
		this.xinghao = xinghao==null?"":xinghao.toLowerCase().replace("-","");
		this.title = title==null?"":title.toLowerCase().replace("-","");
	}

	/**
	 * 过滤特殊字符
	 * @param sour
	 * @return
	 */
	public boolean comp()
	{
		if(!compCN(filter(pinpai)))
		return false;
		if(!comp(filter(xinghao)))
		return false;
		
		return true;
	}
	
	/**
	 * 过滤英文
	 * @param sour
	 * @return
	 */
	public boolean compCN(String str)
	{
		if(str.length()==getWordNum(str))
		{
			//全是英文
			if(!comp(filter(str)))
				return false;
		}else
		{
		if(!comp(filterZN(str)))
		return false;
		}
		return true;
	}
	
	
	public boolean comp(String sour)
	{
		//应该匹配头2个字母  匹配上了然后截取title 在进行匹配
		
	//	int beginIndex=title.indexOf(sour.substring(0,2));
		
//		if(beginIndex!=-1)
//		{
//			//截取title一定范围
//			title=title.substring(beginIndex,beginIndex+sour.length());
//		}
//		else
//		{
//			return false;
//		}
		if(title.indexOf(sour)!=-1)
			return true;
		else
			return false;
		
//		for(int i=0;i<sour.length();i++)
//		{
//			int index=title.indexOf(sour.substring(i,i+1));
//			if(index!=-1)
//			{
//				title=title.substring(0, index)+title.substring(index+1);
//			}
//			else
//			{
//				return false;
//			}
//		}
		
	}
	
	
	
	
	
	
	/**
	 * 过滤特殊字符串
	 * @param sour
	 * @return
	 */
	public String filterZN(String sour)
	{
		 String regEx="[a-zA-Z]";    
         Pattern   p   =   Pattern.compile(regEx);       
         Matcher   m   =   p.matcher(sour);       
         return   filter(m.replaceAll("").trim());    
	}
	
	
	/**
	 * 过滤特殊字符串
	 * @param sour
	 * @return
	 */
	public String filter(String sour)
	{
		 String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~！@#￥%……&*（）——+|{}【】‘；：”“’。，、？]";    
         Pattern   p   =   Pattern.compile(regEx);       
         Matcher   m   =   p.matcher(sour);
         return   m.replaceAll("").trim();    
	}
	
	
	public static void main(String[] args) {
		RegexpGood xp=new RegexpGood(null, "galanz格兰仕", "格兰仕（galanz）4升电压力锅YB403（不粘内胆） ");
		System.out.println(xp.filterZN("dashjddasN很多事 *（#@！（*（！@"));
	}
	

public int getWordNum(String str)
{
	  int letter=0;//字母，包括大写和小写 空格
	  for(int i=0;i<str.length();i++){
	   char c=str.charAt(i);
	   int value=(int)c;
	   if((value>=65 && value<=90) || (value>=97 && value<=122) || value==32 ){
	    ++letter;
	   }
	   
	  }
	  return letter;
}


}
